已編寫指令碼的規則

在這個部分中:

關於已編寫指令碼的規則

脚本规则允许使用 Windows PowerShell 或 VB 脚本创建自定义规则。 脚本的成功或失败决定了作为规则一部分的“安全级别”、“允许的项目”和“拒绝的项目”是否适用于用户。

已編寫指令碼規則會利用可透過 PowerShell 或 VBScript 存取的任何介面,例如 COM (元件物件模型)。

在以下环境下对每个脚本进行评估:

  • 将新配置部署到计算机时。
  • 用户登录时。

若要建立或編輯指令碼,請前往 應用程式控制項 組態編輯器中所需的「已編寫指令碼的規則集」。 規則集 > 已編寫指令碼 > [規則集名稱]

您可以使用以下脚本规则选项来定义脚本何时运行:

  • 執行指令碼
    • 每個工作階段以使用者身分 - 每次使用者登入時執行指令碼。 僅對於使用者工作階段的持續時間套用設定。
    • 每個工作階段以系統身分 - 每次使用者登入時以系統帳戶權限執行指令碼。 僅對於使用者工作階段的持續時間套用設定。
    • 每部電腦以系統身分 - 每次電腦啟動時以系統帳戶權限執行指令碼。 設定會套用至所有使用者工作階段直到電腦重新啟動為止,應用程式控制項 代理程式會重新啟動或發生組態變更。

    注意:作为系统用户运行脚本可能会对计算机造成严重损坏,只能由有经验的脚本作者启用。

  • 等候登入完成 - 選取此選項以避免在使用者登入完成之前執行指令碼。

VBScripts

每个脚本都在托管脚本引擎中运行,允许对脚本执行进行更有效的控制,同时提供高度的输入和输出控制。

  • 不使用 VBS 文件。
  • 没有生成单独的进程。

脚本必须作为函数编写,并且可以包含许多函数,但是必须指定一个主启动函数。 启动函数由 應用程式控制項 代理运行,可用于调用其他函数。

AMScriptRule COM 对象内置在脚本引擎中,并提供对以下方法的访问:

  • strUsername = AMScriptRule.UserName
  • strUserdomain = AMScriptRule.UserDomain
  • strSessionid = AMScriptRule.SessionID
  • strStationname = AMScriptRule.WinStation

    此实例中的 Microsoft standard 表示 WinStation 返回终端服务会话名称的值,其由会话的类型决定,典型值是 ’Console’ 或 ’RDP-Tcp#34’,而不是窗口站的名称(通常为 WinSta0)。

AMScriptRule COM 对象还包括以下方法:

  • strLog = AMScriptRule.Log "My Log Statement"

    允许您将记录字符串输出到代理日志文件中,以用于调试脚本规则。

  • strEnvironmentvar = AMScriptRule.ExpandEnvironment ("%MyEnvironmentVariables%")

    展开运行脚本的用户的环境变量。

使用 WScript. shell 來展開環境變數以僅傳回 SYSTEM 變數。

Windows PowerShell 脚本

如果脚本以值 0 返回(退出),则脚本将通过并且应用规则。 如果返回任何非零值,则脚本将失败并且不应用规则。

每个 PowerShell 脚本都在 PowerShell.exe 的实例中执行,因此 應用程式控制項 既不强制执行也不添加任何特定语法,所有格式正确的 PowerShell 都将正常工作。

PowerShell 必须安装在任何将使用脚本的端点上。

示例脚本

相關主題

規則集

規則集合